package cn.com.api.mapper;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import cn.com.api.entity.ApiDingDan;
import cn.com.api.entity.Cond;
import cn.com.api.resultpage.AccountPage;
import cn.com.api.resultpage.MyOrderPage;
import cn.com.util.*;

public interface ApiDingDanMapper {
	// 确认订单-新插入订单
	public int saveDingDan(ApiDingDan dingdan);

	// 查询最大订单号
	public int searMaxId();

	// 根据订单号orderIds查询订单
	public List<ApiDingDan> searchDingDanByTitles(List<String> titles);

	// 更新订单的支付方式
	public void updateDingdanPaytype(ApiDingDan dingdan);

	// 根据支付订单号查询所有订单（支付宝支付---多张订单只传一个订单号的缘故）
	public List<ApiDingDan> searchDingDanBySerialFlagNo(@Param("serialFlagNo") String serialFlagNo);

	/**
	 * 修改订单信息-- serial------交易号 zi_status---支付状态 serialFlagNo----支付订单号
	 * 
	 */
	public void updateDingDanPayInfo(ApiDingDan dingdan);

	/** 更新订单信息 */
	public void updateDingDan(ApiDingDan dingdan);

	/** 单个订单查询-根据titles */
	public ApiDingDan searchDingDanByTitleId(@Param("titles") String titles);

	public ApiDingDan searchDingDanById(@Param("c_id") Integer c_id);

	/** 查询消费记录 用余额支付的 */
	public List<AccountPage> searchConsumeOrdersListPage(@Param("u_id") String u_id, @Param("page") PageInfo page);

	/** 查询充值记录 账户充值 */
	public List<AccountPage> searchMyBalanceListPage(@Param("map") HashMap map, @Param("page") PageInfo page);

	/** 查询充值记录 账户充值 */
	public List<AccountPage> searchReChargeOrdersListPage(@Param("u_id") String u_id, @Param("page") PageInfo page);

	/** 获取订单-----处理中 ,@Param("page")PageInfo page */
	public List<MyOrderPage> searchOrdersHandingListPage(@Param("map") Map<String, Object> map,
			@Param("page") PageInfo page);

	/** 获取订单-----已完成、已删除（取消）add date */
	public List<MyOrderPage> searchOrdersByEnableListPage(@Param("map") Map<String, Object> map,
			@Param("page") PageInfo page);

	/** 获取所有订单---- */
	public List<MyOrderPage> searchAllOrdersListPage(@Param("map") Map<String, Object> map,
			@Param("page") PageInfo page);

	public List<MyOrderPage> searchOrdersNoDianPingListPage(@Param("map") Map<String, Object> map,
			@Param("page") PageInfo page);

	/** 用户是否有1元购订单 */
	public List<ApiDingDan> searchOneGoodsOrders(@Param("u_id") String u_id);

	/** 生成订单的订单编号 每个店铺每天从1开始 */
	public Integer searchMaxOrderNumByShopId(@Param("shop_id") Integer shop_id);

	/**************** 商家端 ***************************************************************/

	/** 根据订单状态查询订单 dd_status add date--没有用 */
	public List<MyOrderPage> shopSearchOrdersByStatusListPage(@Param("map") Map<String, Object> map,
			@Param("page") PageInfo page);

	/** 根据订单状态查询订单 dd_statusList add date */
	public List<MyOrderPage> shopSearchOrdersByStatusListListPage(@Param("map") Map<String, Object> map,
			@Param("page") PageInfo page);

	/** 获取订单-----已完成、已删除（取消）add date */
	public List<MyOrderPage> shopSearchOrdersByEnableListPage(@Param("map") Map<String, Object> map,
			@Param("page") PageInfo page);

	/** 商铺端查询全部订单 add date */
	public List<MyOrderPage> shopSearchOrdersByShopidListPage(@Param("map") Map<String, Object> map,
			@Param("page") PageInfo page);

	/** 商铺端被催单的订单 */
	public List<MyOrderPage> searchOrdersByReminderListPage(@Param("shop_id") Integer shop_id,
			@Param("page") PageInfo page);

	/** 商铺端查询订单-搜索 */
	public List<MyOrderPage> shopSearchOrdersListPage(@Param("map") Map<String, Object> map,
			@Param("page") PageInfo page);

	/** 商铺端-待接单的订单 新订单 */
	public List<MyOrderPage> shopSearchNewOrdersListPage(@Param("map") Map<String, Object> map,
			@Param("page") PageInfo page);

	/**************** 配送端 ***************************************************************/
	/** 配送端的订单 */
	public List<MyOrderPage> searchSendOrdersByStatusListListPage(@Param("map") Map<String, Object> map,
			@Param("page") PageInfo page);

	/** 配送员查询订单-搜索 */
	public List<MyOrderPage> sendSearchOrdersListPage(@Param("map") Map<String, Object> map,
			@Param("page") PageInfo page);

	/** 指定配送员的定时任务sql 更新订单表的物流状态，待配送接单 */
	public void updateDingDanDdstatusByOrderId(@Param("map") Map<String, Object> map);

	/*************************************************************************************/
	/** 定时任务：下单1小时后，未支付 则取消订单 */
	public List<ApiDingDan> searchNewOrdersNotPay();

	public void updateCancelOrdersTask(@Param("list") List<String> list);

	public List<Map<String, Object>> backShopOrder(Cond cond);

	public List<Map<String, Object>> shopDayOrderPer(@Param("nowDate") String nowDate, @Param("shopid") String shopid);

	/** 定时任务：定时查询 最新100笔已支付订单 erp传递使用 */
	public List<ApiDingDan> searchNewOrdersPaid();

	public List<Map<String, Object>> searchOrderListPage(@Param("map") Map<String, Object> conditions,
			@Param("page") PageInfo pageInfo);

	public List<Map<String, Object>> getOrderListPage(@Param("map") Map<String, Object> conditions,
			@Param("page") PageInfo pageInfo);

	public Integer getShopDingDanSize(HashMap map);

	/** 获取完成状态的订单数量和订单金额 */
	public Map<String, Object> getorderCountAndSummoney(@Param("shopid") String shopid, @Param("nowDate") String date);

	/** 获取下单人数 */
	public Integer getPayPersonSum(@Param("shopid") String shopid, @Param("nowDate") String date);

}